From c3bfaaa5d11004837c0935872448f35a330feb0f Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 22 Jul 2014 18:32:02 -0400 Subject: [PATCH] Add some tests for GtkAdjustment --- testsuite/gtk/Makefile.am | 1 + testsuite/gtk/adjustment.c | 164 +++++++++++++++++++++++++++++++++++++ 2 files changed, 165 insertions(+) create mode 100644 testsuite/gtk/adjustment.c diff --git a/testsuite/gtk/Makefile.am b/testsuite/gtk/Makefile.am index 281f95bbbb..e9f209fe20 100644 --- a/testsuite/gtk/Makefile.am +++ b/testsuite/gtk/Makefile.am @@ -31,6 +31,7 @@ TEST_PROGS += \ accel \ accessible \ action \ + adjustment \ bitmask \ builder \ cellarea \ diff --git a/testsuite/gtk/adjustment.c b/testsuite/gtk/adjustment.c new file mode 100644 index 0000000000..20e45cbaa5 --- /dev/null +++ b/testsuite/gtk/adjustment.c @@ -0,0 +1,164 @@ +/* GTK - The GIMP Toolkit + * Copyright (C) 2014 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#include + +static void +test_basic (void) +{ + GtkAdjustment *a; + + a = gtk_adjustment_new (2.0, 0.0, 100.0, 1.0, 5.0, 10.0); + + g_assert_cmpfloat (gtk_adjustment_get_value (a), ==, 2.0); + g_assert_cmpfloat (gtk_adjustment_get_lower (a), ==, 0.0); + g_assert_cmpfloat (gtk_adjustment_get_upper (a), ==, 100.0); + g_assert_cmpfloat (gtk_adjustment_get_step_increment (a), ==, 1.0); + g_assert_cmpfloat (gtk_adjustment_get_page_increment (a), ==, 5.0); + g_assert_cmpfloat (gtk_adjustment_get_page_size (a), ==, 10.0); + g_assert_cmpfloat (gtk_adjustment_get_minimum_increment (a), ==, 1.0); + + gtk_adjustment_set_value (a, 50.0); + gtk_adjustment_set_lower (a, 20.0); + gtk_adjustment_set_upper (a, 75.5); + gtk_adjustment_set_step_increment (a, 2.2); + gtk_adjustment_set_page_increment (a, 1.5); + gtk_adjustment_set_page_size (a, 10.0); + + g_assert_cmpfloat (gtk_adjustment_get_value (a), ==, 50.0); + g_assert_cmpfloat (gtk_adjustment_get_lower (a), ==, 20.0); + g_assert_cmpfloat (gtk_adjustment_get_upper (a), ==, 75.5); + g_assert_cmpfloat (gtk_adjustment_get_step_increment (a), ==, 2.2); + g_assert_cmpfloat (gtk_adjustment_get_page_increment (a), ==, 1.5); + g_assert_cmpfloat (gtk_adjustment_get_page_size (a), ==, 10.0); + g_assert_cmpfloat (gtk_adjustment_get_minimum_increment (a), ==, 1.5); + + g_object_unref (a); +} + +static gint changed_count; +static gint value_changed_count; + +static void +changed_cb (GtkAdjustment *a) +{ + changed_count++; +} + +static void +value_changed_cb (GtkAdjustment *a) +{ + value_changed_count++; +} + +static void +test_signals (void) +{ + GtkAdjustment *a; + + a = gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + + g_signal_connect (a, "changed", G_CALLBACK (changed_cb), NULL); + g_signal_connect (a, "value-changed", G_CALLBACK (value_changed_cb), NULL); + + changed_count = value_changed_count = 0; + gtk_adjustment_changed (a); + g_assert_cmpint (changed_count, ==, 1); + g_assert_cmpint (value_changed_count, ==, 0); + + changed_count = value_changed_count = 0; + gtk_adjustment_value_changed (a); + g_assert_cmpint (changed_count, ==, 0); + g_assert_cmpint (value_changed_count, ==, 1); + + changed_count = value_changed_count = 0; + gtk_adjustment_configure (a, 0.0, 0.0, 100.0, 1.0, 5.0, 0.0); + g_assert_cmpint (changed_count, ==, 1); + g_assert_cmpint (value_changed_count, ==, 0); + + changed_count = value_changed_count = 0; + gtk_adjustment_set_value (a, 50.0); + gtk_adjustment_set_lower (a, 20.0); + gtk_adjustment_set_upper (a, 75.5); + gtk_adjustment_set_step_increment (a, 2.2); + gtk_adjustment_set_page_increment (a, 1.5); + gtk_adjustment_set_page_size (a, 10.0); + g_assert_cmpint (changed_count, ==, 5); + g_assert_cmpint (value_changed_count, ==, 1); + + g_object_unref (a); +} + +static void +test_clamp (void) +{ + GtkAdjustment *a; + + a = gtk_adjustment_new (2.0, 0.0, 100.0, 1.0, 5.0, 10.0); + + gtk_adjustment_set_value (a, -10.0); + g_assert_cmpfloat (gtk_adjustment_get_value (a), ==, 0.0); + + gtk_adjustment_set_value (a, 200.0); + g_assert_cmpfloat (gtk_adjustment_get_value (a), ==, 90.0); + + gtk_adjustment_set_value (a, 99.0); + g_assert_cmpfloat (gtk_adjustment_get_value (a), ==, 90.0); + + gtk_adjustment_configure (a, 0.0, 0.0, 10.0, 1.0, 5.0, 20.0); + + gtk_adjustment_set_value (a, 5.0); + g_assert_cmpfloat (gtk_adjustment_get_value (a), ==, 0.0); + + g_object_unref (a); +} + +static void +test_clamp_page (void) +{ + GtkAdjustment *a; + + a = gtk_adjustment_new (20.0, 0.0, 100.0, 1.0, 5.0, 10.0); + + gtk_adjustment_clamp_page (a, 50.0, 55.0); + g_assert_cmpfloat (gtk_adjustment_get_value (a), ==, 45.0); + + gtk_adjustment_clamp_page (a, 52.0, 58.0); + g_assert_cmpfloat (gtk_adjustment_get_value (a), ==, 48.0); + + gtk_adjustment_clamp_page (a, 48.0, 50.0); + g_assert_cmpfloat (gtk_adjustment_get_value (a), ==, 48.0); + + gtk_adjustment_clamp_page (a, 30.0, 50.0); + g_assert_cmpfloat (gtk_adjustment_get_value (a), ==, 30.0); + + g_object_unref (a); +} + +int +main (int argc, + char *argv[]) +{ + gtk_test_init (&argc, &argv); + + g_test_add_func ("/adjustment/basic", test_basic); + g_test_add_func ("/adjustment/signals", test_signals); + g_test_add_func ("/adjustment/clamp", test_clamp); + g_test_add_func ("/adjustment/clamp_page", test_clamp_page); + + return g_test_run(); +} -- 2.30.2